In the semiconductor industry, fuse elements are a widely used feature in integrated circuits for a variety of purposes, such as improving manufacturing yield or customizing a generic integrated circuit. For example, by replacing defective circuits on a chip with duplicate or redundant circuits on the same chip, manufacturing yields can be significantly increased. A fuse disconnected by a laser beam is referred to as a laser fuse, while a fuse disconnected by passing an electrical current, or blowing, is referred to as an electrical fuse, or e-fuse. By selectively blowing fuses within an integrated circuit, which has multiple potential uses, a generic integrated circuit design may be economically manufactured and adapted to a variety of custom uses.
Typically, fuses are incorporated in the design of the integrated circuit, wherein the fuses are selectively blown, for example, by passing an electrical current of a sufficient magnitude to cause the electromigration or melting, thereby creating a more resistive path or an open circuit. Alternatively, a current that is weaker than the current required to entirely blow the fuse can be applied to the fuse in order to degrade the fuse, thus increasing a resistance through the fuse. The process of selectively blowing or degrading fuses is often referred to as “programming”.
Conventional circuits for programming a fuse are shown in FIGS. 1a and 1b, in which the fuse is connected between the drain of a programming transistor and a power supply node 100 or 120. Initially, the resistance of the fuse is small (in the range of 100 ohms). The fuse is programmed by switching on the programming transistor 106 or 122 with a high voltage Vprog applied to the gate of the transistor 106 or a low voltage applied to the gate of the transistor 122. When the transistor is turned on, the transistor starts to conduct and current flows through the fuse 102 or 126. The current flow causes the fuse 102 or 126 to heat up, and if sufficient current continues to flows through it, it will get programmed, resulting in a much higher resistance. Blocks 110 and 130 are detection circuits to detect the fuse resistances.
The resistance of the electrical fuse always increases through programming. The fuse is programmed to a high resistance, either “open” or higher than a reference resistance. If state “0” is used to represent fuse's low resistance state and state “1” is used the represent the high resistance state, then the state of a programmable fuse can only change from “0” to “1” and the state can only be changed once. This limits the usage of programmable electrical fuse to a large extent. Therefore there is the need for a new fuse that can be programmed multiple times.